home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Eliminator / Eliminator.jar / MyCanvas.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-04-11  |  13.7 KB  |  566 lines

  1. import javax.microedition.lcdui.Canvas;
  2. import javax.microedition.lcdui.Command;
  3. import javax.microedition.lcdui.CommandListener;
  4. import javax.microedition.lcdui.Displayable;
  5. import javax.microedition.lcdui.Font;
  6. import javax.microedition.lcdui.Graphics;
  7. import javax.microedition.lcdui.Image;
  8. import javax.microedition.rms.RecordStore;
  9.  
  10. class MyCanvas extends Canvas implements CommandListener, Runnable {
  11.    Thread game0 = null;
  12.    static int DISS_DELAY = 10;
  13.    static int MOVE_DELAY = 2;
  14.    // $FF: renamed from: g2 javax.microedition.lcdui.Graphics
  15.    private Graphics field_0;
  16.    static int gLT = 20;
  17.    // $FF: renamed from: wY int
  18.    private int field_1 = ((Canvas)this).getHeight();
  19.    static int xSz = 8;
  20.    static int ySz = 8;
  21.    static int MAX_X = 11;
  22.    static int MAX_Y = 8;
  23.    static int MAX_IMG = 11;
  24.    static int X_0 = 0;
  25.    static int Y_0 = -1;
  26.    private Image[] xImg;
  27.    private static String mCode = " 0123456789   , #    *.oO@+    ";
  28.    private static String[] biDat = new String[]{", 1#7, 1#o.o.o.#, 1# 5#, 1# # # #1, 1# # 3#, 1# 4#1, 1#6,", ", 2#5, 2#.* 1#, 2# 3#, 2#. 2#, 2# 1.#1, 2#5,", ", 2#5, 1#1 3#1, 1#. o#. #, 1# 4o#, 1#1 . 1#1, 2#5,", ", 2#5, 2# 1. #, 2#1 1#1, 2# 2.#, 2#. 1#1, 2#4,", ", 2#2, 1#1 #2, 1# . 1#1, 1#* . 1#1, 1# 1* . #, 1# # 1#2, 1#5,", ", 1#7, 1#o 3o#, 1# # 1# #, 1# 1. 2#, 1#1. . #1, 1# 1o . #, 1#7,", " 2#5 , 1#1 . *#1, 1# 4.#, 1# 5#, 1#. 4#, 1#1 3#1, 2#1* #1, 3#3,", ", 1#6, 1# 3.#, 1#. 2#1, 1# 1* 1#, 1# 3#1, 1#2.#1, 3#2,", ", #72, # 1. 2* #, #1 1*. 1#1, 1# *. * #, 1#. 3.#, 1#7,", ", 3#4, 2#1 . #1, 1#1 4#, 1#. 3.#, 1# 2#1*#, 1#7,", " 5#2, 1#4.#1, 1#. 4#, 1#1 2* #, 2#1 # #1, 3# #2, 3# 1.#, 3#4,", ", 1#6, 1# 4#, 1#1 .* #, 1#. 3#, 1#* 2.#, 1# 2* #, 1#6,", " #72, # 7#, # 7#, # #1 4#, #.*.#*. 1#, # 2# 3#, # 7#, #2 #5, 2#2,", ", 1#6, 1# .# o#1, 1#1 3o#, 2# 3#1, 2#* 2.#, 2#.o 1#1, 2#5,", ", 2#5, 1#1. 2#, 1# 3.#, 1#1 * #1, 1# 4#, 1#1 2.#, 2#5,", ", 3#2, 2#1 #3, 1#1 4#, 1# 5#, 1# .o#.o#, 1#1o#2.#, 2#2 #2,", " 4#2, 1#3O#1, 1# o. 1#, 1# # o.#2, #1 4O*#, # 5o#1, #1 O# 1#1, 1#6,", " 5#2, 3#2 #1, 2#1. 2#, 2# 2o#1, 1#2 . 1#, 1# 1o .#1, 1#1 1o#1, 2#4,", ", 2#5, 1#1 1o #1, 1#o 3.#, 1#. 2* #, 1#1 . 2#, 2#3 #1, 5#2,", ", 1#4, 1#. 1#1, 1# 3#1, 1# o o.#, 1#2. 1#, 3# 2#, 3#4,", " 3#4, 2#1 O # , 1#1 3#1, #1.O 3#, # 2o 1#1, # 1#2.# , # O o 1#, #7,", " 1#2, #1 #4, #. 2O #, # 2#1.#1, # 1Oo# 1#, # o# 2#1, # 2. o #, #O 1#1 #1, #7,", " 2#2, 2# #2, 2# 1o#1, 2#*. o#1, 2# #O o#, 1#1 2# #, 1# . 2O#, 1#1O 2#1, 2#5,", " #71, # Oo.oO #, # 2o 2#, # 2O 2#, # 2o 2#, # o . O #, #1 1# 1#1, 1#6 ,", " 2#4, 1#1 # #1, 1# .# 1#1, 1#1 #. 1#, 1# 5#, 1#1 * 1.#, 2#1 2#1, 3#1 #1, 4#2,", " 2#5, 1#1 1# #1, 1#.*o.*.#1, 1# 6#, 1# #1 # 1#, #1 2#1 1#, # o 4#1, #1 4#1, 1#6,", " 3#3, 2#1 1#3, 2# . 3#, 2# 1#.#2, #2 # # #, # 3. #1, #3 1#1, 3#3,", " 1#5, 1# # 1#1, 1# 1. 1#, #2. * #1, # 3#. #, #1 2#3, 1#2 #, 3#2,", " 1#7, 1# # o 1#1, 1# . #o 1#, #1.# o 1#1, # 1. # #1, # 4#1, #1 #3, 1#2,", " 1#5, 1# 1o.#1, 1# . #o#1, 1# * 3#, 1#o 4#, 1#1 2.#1, 2#1 1#1, 3#3,", " 2#5, 2# # .#1, 2# 1o 1#, 1#2. * #, 1#. 3#1, 1#1o 2#, 2# 3#, 2#5,", " 5#2, 4#1*#, 3#1. #, 2#1. 1#1, 1#1 4#, 1# 4.#, 1#o 1* o#, 1#7,", " 2#7, #2 #1 2#, # 5. #, #* 4O#1, #O 4#1, #o . #o#1, #. 1#1 1#, # #Oo 1.#, #71,", " 2#5, 2#. 2#1, 1#1 # O #, 1# 1Oo# #, 1# 2Oo #, 1#1 o# 1#, 2# 2.#1, 2#5,", ", 1#5, 1# 1o #1, 1# O# o#, 1#o 1O.#1, 1# 5#, 1#1. 2O#, 2#6,", " 1#5, 1# O .#1, 1#1 2O#1, 2# o#. #, 1#1 3o#, 1#O #O 1#, 1# o 3#, 1#1 #4, 2#2,", " 2#4, 1#1O 1#, 1# o 1#1, 1#1. 2#, 1# O.o*#, 1#1 2.#1, 2# 2o #, 2#1 3#, 3#5,", " 2#6, 2# 1. o#, 1#1 o# 1#, 1# 2# 1#, 1#1 3#1, 2#. 2#1, 2# 2o #, 2#1 .# #, 3#5,", ", 2#4, 1#1 1.#1, 1# . # #1, 1#1 . 1o#, 1#2o *.#, 1# . * o#, 1#7,", " 1#7, #1 o 1O #, # 4o#1, #1 5#, # 1O 1.#1, #1. 2*#, 1#1o 2#, 1# . 1O#, 1#6,"};
  29.    static byte MAX_MOVE = 12;
  30.    private static int[] aMove = new int[]{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10};
  31.    static int MAX_LEVEL;
  32.    private byte[] xDat;
  33.    private byte[] xMove;
  34.    static final String DATAFILE = "D";
  35.    private int xPos;
  36.    private int yPos;
  37.    private int mvPos;
  38.    private int gLevel;
  39.    private int maxMove;
  40.    private byte[][] currCanvas;
  41.    private byte pmStat;
  42.    static String mvName;
  43.    private int hisKey;
  44.    static int[] hisKeys;
  45.    private Command cmInfo;
  46.    private Command cmAbout;
  47.    private Command cmExit;
  48.    private Eliminator midlet;
  49.    private String txt;
  50.    // $FF: renamed from: rs javax.microedition.rms.RecordStore
  51.    private RecordStore field_2;
  52.    private Font font;
  53.  
  54.    public MyCanvas(Eliminator var1) {
  55.       this.xImg = new Image[MAX_IMG + 1];
  56.       this.xDat = new byte[2 + MAX_LEVEL * 4];
  57.       this.xMove = new byte[1 + MAX_MOVE];
  58.       this.currCanvas = new byte[MAX_Y + 1][MAX_X + 1];
  59.       this.pmStat = 0;
  60.       this.hisKey = 0;
  61.       this.cmInfo = new Command("Info", 1, 0);
  62.       this.cmAbout = new Command("About", 1, 1);
  63.       this.cmExit = new Command("Exit", 1, 2);
  64.       this.txt = "Eliminator v1.1";
  65.       this.field_2 = null;
  66.       this.font = Font.getFont(64, 1, 8);
  67.       this.midlet = var1;
  68.  
  69.       for(int var2 = 0; var2 <= MAX_IMG; ++var2) {
  70.          this.xImg[var2] = Image.createImage(8, 8);
  71.  
  72.          try {
  73.             this.xImg[var2] = Image.createImage("t" + var2 + ".png");
  74.          } catch (Exception var5) {
  75.          }
  76.       }
  77.  
  78.       try {
  79.          this.field_2 = RecordStore.openRecordStore("D", false);
  80.          this.field_2.getRecord(1, this.xDat, 0);
  81.       } catch (Exception var6) {
  82.          for(int var7 = 0; var7 < MAX_LEVEL; ++var7) {
  83.             this.xDat[1 + 4 * var7] = 0;
  84.          }
  85.  
  86.          this.xDat[0] = 0;
  87.       }
  88.  
  89.       try {
  90.          this.field_2.closeRecordStore();
  91.       } catch (Exception var4) {
  92.       }
  93.  
  94.       this.gLevel = this.xDat[0];
  95.       this.dat2Canvas(0);
  96.       ((Displayable)this).addCommand(this.cmInfo);
  97.       ((Displayable)this).addCommand(this.cmExit);
  98.       ((Displayable)this).addCommand(this.cmAbout);
  99.       ((Displayable)this).setCommandListener(this);
  100.       this.game0 = new Thread(this);
  101.       this.game0.start();
  102.    }
  103.  
  104.    public void run() {
  105.    }
  106.  
  107.    public void dStat(int var1) {
  108.       String var5;
  109.       switch (this.pmStat) {
  110.          case 1:
  111.             var5 = "*";
  112.             break;
  113.          case 3:
  114.             int var4 = (this.mvPos & 3) << 1;
  115.             byte var3 = (byte)(this.xDat[1 + 4 * this.gLevel + 1 + (this.mvPos >> 2)] >> var4 & 3);
  116.             this.hisKey = hisKeys[var3];
  117.             var5 = mvName.substring(var3, var3 + 1);
  118.             break;
  119.          default:
  120.             var5 = " ";
  121.       }
  122.  
  123.       if (var1 == 1 || this.pmStat > 0) {
  124.          this.dString(var5, 24, 1, 8);
  125.       }
  126.  
  127.    }
  128.  
  129.    public void dString(String var1, int var2, int var3, int var4) {
  130.       this.field_0.setColor(0, 0, 0);
  131.       this.field_0.fillRect(var2, this.field_1 - 10, var4, 10);
  132.       this.field_0.setColor(255, 255, 255);
  133.       this.field_0.drawString(var1, var2 + var3, this.field_1 - 9, gLT);
  134.       this.field_0.setColor(0, 0, 0);
  135.    }
  136.  
  137.    public void dMove() {
  138.       this.dStat(1);
  139.       if (this.mvPos > 0) {
  140.          this.dString(" " + this.mvPos + " of " + this.maxMove, 33, 2, 60);
  141.       } else {
  142.          this.dString("By RizaPN", 33, 2, 60);
  143.       }
  144.  
  145.    }
  146.  
  147.    public void paint(Graphics var1) {
  148.       String var2 = "" + (1000 + this.gLevel);
  149.       var2 = var2.substring(1, 4);
  150.       this.field_0 = var1;
  151.       int var3 = Y_0;
  152.  
  153.       for(int var4 = 0; var4 <= MAX_Y; ++var4) {
  154.          int var5 = X_0;
  155.  
  156.          for(int var6 = 0; var6 <= MAX_X; ++var6) {
  157.             byte var7 = this.currCanvas[var4][var6];
  158.             if (var7 == 4 || var7 == 5) {
  159.                this.xPos = var6;
  160.                this.yPos = var4;
  161.             }
  162.  
  163.             if (var7 < 0 || var7 > MAX_IMG) {
  164.                var7 = 0;
  165.             }
  166.  
  167.             var1.drawImage(this.xImg[var7], var5, var3, gLT);
  168.             var5 += 8;
  169.          }
  170.  
  171.          var3 += 8;
  172.       }
  173.  
  174.       var1.setFont(this.font);
  175.       this.dString(var2, 0, 2, 23);
  176.       this.dMove();
  177.    }
  178.  
  179.    public void keyPressed(int var1) {
  180.       byte var2 = 0;
  181.       int var3 = 0;
  182.       boolean var4 = false;
  183.       int var5 = 0;
  184.       String var9 = "";
  185.       if (var1 == 35 && this.pmStat == 3) {
  186.          var1 = this.hisKey;
  187.       }
  188.  
  189.       switch (var1) {
  190.          case -62:
  191.          case 54:
  192.             var2 = 1;
  193.             var5 = 7;
  194.             break;
  195.          case -61:
  196.          case 52:
  197.             var2 = -1;
  198.             var5 = 5;
  199.             break;
  200.          case -60:
  201.          case 56:
  202.             var3 = 1;
  203.             var5 = 3;
  204.             break;
  205.          case -59:
  206.          case 50:
  207.             var3 = -1;
  208.             var5 = 1;
  209.             break;
  210.          case -1:
  211.          case 48:
  212.             var5 = -100;
  213.             break;
  214.          case 42:
  215.             if (this.pmStat == 0) {
  216.                return;
  217.             }
  218.  
  219.             this.pmStat = 3;
  220.             var5 = -100;
  221.             break;
  222.          case 49:
  223.             var5 = -101;
  224.             break;
  225.          case 51:
  226.             var5 = -99;
  227.             break;
  228.          case 55:
  229.             var5 = -110;
  230.             break;
  231.          case 57:
  232.             var5 = -90;
  233.       }
  234.  
  235.       if (var2 == 0 && var3 == 0) {
  236.          if (var5 < 0) {
  237.             this.dat2Canvas(var5 + 100);
  238.             ((Canvas)this).repaint();
  239.          }
  240.  
  241.       } else {
  242.          this.xMove[this.mvPos++] = (byte)var5;
  243.          this.dMove();
  244.          var5 = 1;
  245.  
  246.          while(var5 > 0) {
  247.             var5 = this.moveBall(var2, var3);
  248.             if (var5 > 0) {
  249.                var5 = this.checkBoard();
  250.             }
  251.          }
  252.  
  253.          var5 = this.GameEnd();
  254.          if (var5 == 1) {
  255.             var5 = -98;
  256.             var9 = "OK.CLEAR";
  257.             var3 = 1 + 4 * this.gLevel;
  258.             if (this.xDat[var3] == 0 || this.mvPos < this.xDat[var3]) {
  259.                this.xDat[var3] = (byte)this.mvPos;
  260.                ++var3;
  261.                this.xDat[var3] = 0;
  262.  
  263.                for(int var12 = 0; var12 < this.mvPos; ++var12) {
  264.                   byte var7 = (byte)((this.xMove[var12] & 7) >> 1 << ((var12 & 3) << 1));
  265.                   this.xDat[var3] |= var7;
  266.                   if ((var12 & 3) == 3) {
  267.                      ++var3;
  268.                      this.xDat[var3] = 0;
  269.                   }
  270.                }
  271.             }
  272.          } else if (var5 == -1 || this.mvPos >= this.maxMove) {
  273.             var5 = -99;
  274.             var9 = "TRY AGAIN";
  275.          }
  276.  
  277.          if (var5 <= -98) {
  278.             this.dString(var9, 33, 2, 60);
  279.             if (this.pmStat != 3) {
  280.                try {
  281.                   Thread.sleep(1100L);
  282.                } catch (InterruptedException var11) {
  283.                }
  284.  
  285.                this.dat2Canvas(var5 + 99);
  286.                ((Canvas)this).repaint();
  287.             } else {
  288.                ++this.gLevel;
  289.                this.pmStat = 0;
  290.             }
  291.          }
  292.  
  293.       }
  294.    }
  295.  
  296.    public boolean dat2Canvas(int var1) {
  297.       byte var6 = 0;
  298.       byte var7 = 0;
  299.       this.gLevel += var1;
  300.       if (this.gLevel < 0) {
  301.          this.gLevel = 0;
  302.       }
  303.  
  304.       if (this.gLevel >= MAX_LEVEL) {
  305.          this.gLevel = MAX_LEVEL - 1;
  306.       }
  307.  
  308.       String var8 = biDat[this.gLevel];
  309.  
  310.       for(int var4 = 0; var4 <= MAX_Y; ++var4) {
  311.          for(int var3 = 0; var3 <= MAX_X; ++var3) {
  312.             this.currCanvas[var4][var3] = 0;
  313.          }
  314.       }
  315.  
  316.       int var11 = 0;
  317.       int var10 = 0;
  318.  
  319.       for(int var2 = 0; var2 < var8.length(); ++var2) {
  320.          var6 = (byte)mCode.indexOf(var8.charAt(var2));
  321.          if (var6 % 15 <= MAX_IMG && var10 <= MAX_X) {
  322.             int var5;
  323.             if (var6 > 1 && var6 < 10) {
  324.                var5 = var6 - 1;
  325.             } else {
  326.                var5 = 1;
  327.                var7 = (byte)(var6 % 15);
  328.                if (var7 < 0) {
  329.                   var7 = 0;
  330.                }
  331.             }
  332.  
  333.             while(var5 >= 1) {
  334.                this.currCanvas[var11][var10] = var7;
  335.                ++var10;
  336.                --var5;
  337.                if (var10 > MAX_X) {
  338.                   break;
  339.                }
  340.             }
  341.          } else {
  342.             var7 = (byte)(MAX_IMG + 1);
  343.             var10 = 0;
  344.             ++var11;
  345.             if (var11 > MAX_Y) {
  346.                break;
  347.             }
  348.          }
  349.       }
  350.  
  351.       for(int var9 = 0; var9 < MAX_MOVE; ++var9) {
  352.          this.xMove[var9] = 0;
  353.       }
  354.  
  355.       this.mvPos = 0;
  356.       this.xDat[0] = (byte)this.gLevel;
  357.       this.maxMove = aMove[this.gLevel];
  358.       if (this.pmStat != 3 || var1 != 0) {
  359.          if (this.xDat[1 + 4 * this.gLevel] > 0) {
  360.             this.pmStat = 1;
  361.          } else {
  362.             this.pmStat = 0;
  363.          }
  364.       }
  365.  
  366.       return true;
  367.    }
  368.  
  369.    public int moveBall(int var1, int var2) {
  370.       int var11 = 0;
  371.       if (var1 != 0) {
  372.          int var6 = Y_0;
  373.  
  374.          for(int var4 = 0; var4 <= MAX_Y; ++var4) {
  375.             int var3;
  376.             if (var1 == 1) {
  377.                var3 = MAX_X - 1;
  378.             } else {
  379.                var3 = 1;
  380.             }
  381.  
  382.             for(; var3 > 0 && var3 < MAX_X; var3 -= var1) {
  383.                byte var9;
  384.                if ((var9 = this.currCanvas[var4][var3]) >= 6) {
  385.                   int var7 = var3;
  386.                   int var5 = X_0 + xSz * var3;
  387.  
  388.                   while(var7 > 0 && var7 < MAX_X && this.currCanvas[var4][var7 + var1] == 0) {
  389.                      try {
  390.                         Thread.sleep((long)MOVE_DELAY);
  391.                      } catch (InterruptedException var14) {
  392.                      }
  393.  
  394.                      ++var11;
  395.                      this.currCanvas[var4][var7] = 0;
  396.                      this.field_0.drawImage(this.xImg[0], var5, var6, gLT);
  397.                      var7 += var1;
  398.                      var5 += xSz * var1;
  399.                      this.currCanvas[var4][var7] = var9;
  400.                      this.field_0.drawImage(this.xImg[var9], var5, var6, gLT);
  401.                   }
  402.                }
  403.             }
  404.  
  405.             var6 += ySz;
  406.          }
  407.       }
  408.  
  409.       if (var2 != 0) {
  410.          int var17 = X_0;
  411.  
  412.          for(int var15 = 0; var15 <= MAX_X; ++var15) {
  413.             int var16;
  414.             if (var2 == 1) {
  415.                var16 = MAX_Y - 1;
  416.             } else {
  417.                var16 = 1;
  418.             }
  419.  
  420.             for(; var16 > 0 && var16 < MAX_Y; var16 -= var2) {
  421.                byte var19;
  422.                if ((var19 = this.currCanvas[var16][var15]) >= 6) {
  423.                   int var8 = var16;
  424.                   int var18 = Y_0 + ySz * var16;
  425.  
  426.                   while(var8 > 0 && var8 < MAX_Y && this.currCanvas[var8 + var2][var15] == 0) {
  427.                      try {
  428.                         Thread.sleep((long)MOVE_DELAY);
  429.                      } catch (InterruptedException var13) {
  430.                      }
  431.  
  432.                      ++var11;
  433.                      this.currCanvas[var8][var15] = 0;
  434.                      this.field_0.drawImage(this.xImg[0], var17, var18, gLT);
  435.                      var8 += var2;
  436.                      var18 += ySz * var2;
  437.                      this.currCanvas[var8][var15] = var19;
  438.                      this.field_0.drawImage(this.xImg[var19], var17, var18, gLT);
  439.                   }
  440.                }
  441.             }
  442.  
  443.             var17 += xSz;
  444.          }
  445.       }
  446.  
  447.       return var11;
  448.    }
  449.  
  450.    public int checkBoard() {
  451.       int var3 = 0;
  452.       boolean var4 = false;
  453.       byte var2 = 100;
  454.  
  455.       for(int var5 = 0; var5 < MAX_Y; ++var5) {
  456.          for(int var6 = 0; var6 < MAX_X; ++var6) {
  457.             byte var1 = (byte)(this.currCanvas[var5][var6] % var2);
  458.             if (var1 >= 7) {
  459.                if (var1 == this.currCanvas[var5][var6 + 1] % var2) {
  460.                   this.currCanvas[var5][var6] = this.currCanvas[var5][var6 + 1] = (byte)(var1 + var2);
  461.                   ++var3;
  462.                }
  463.  
  464.                if (var1 == this.currCanvas[var5 + 1][var6] % var2) {
  465.                   this.currCanvas[var5][var6] = this.currCanvas[var5 + 1][var6] = (byte)(var1 + var2);
  466.                   ++var3;
  467.                }
  468.             }
  469.          }
  470.       }
  471.  
  472.       if (var3 == 0) {
  473.          return 0;
  474.       } else {
  475.          for(int var12 = 2; var12 <= 6; ++var12) {
  476.             try {
  477.                Thread.sleep((long)DISS_DELAY);
  478.             } catch (InterruptedException var11) {
  479.             }
  480.  
  481.             int var7 = Y_0;
  482.  
  483.             for(int var8 = 0; var8 < MAX_Y; ++var8) {
  484.                int var9 = X_0;
  485.  
  486.                for(int var10 = 0; var10 < MAX_X; ++var10) {
  487.                   if (this.currCanvas[var8][var10] > MAX_IMG) {
  488.                      if (var12 < 6) {
  489.                         this.field_0.drawImage(this.xImg[var12], var9, var7, gLT);
  490.                      } else {
  491.                         this.currCanvas[var8][var10] = 0;
  492.                         this.field_0.drawImage(this.xImg[0], var9, var7, gLT);
  493.                      }
  494.                   }
  495.  
  496.                   var9 += xSz;
  497.                }
  498.  
  499.                var7 += ySz;
  500.             }
  501.          }
  502.  
  503.          return var3;
  504.       }
  505.    }
  506.  
  507.    public int GameEnd() {
  508.       byte var3 = 1;
  509.       int[] var4 = new int[MAX_IMG + 1];
  510.  
  511.       for(int var2 = 0; var2 <= MAX_IMG; ++var2) {
  512.          var4[var2] = 0;
  513.       }
  514.  
  515.       for(int var6 = 0; var6 <= MAX_Y; ++var6) {
  516.          for(int var1 = 0; var1 <= MAX_X; ++var1) {
  517.             ++var4[this.currCanvas[var6][var1]];
  518.          }
  519.       }
  520.  
  521.       for(int var7 = 7; var7 <= MAX_IMG; ++var7) {
  522.          int var5 = var4[var7];
  523.          if (var5 == 1) {
  524.             var3 = -1;
  525.             var7 = MAX_IMG + 1;
  526.          } else if (var3 == 1 && var5 > 1) {
  527.             var3 = 0;
  528.          }
  529.       }
  530.  
  531.       return var3;
  532.    }
  533.  
  534.    public void commandAction(Command var1, Displayable var2) {
  535.       if (var1 == this.cmExit) {
  536.          try {
  537.             this.field_2 = RecordStore.openRecordStore("D", true);
  538.             if (this.field_2.getNumRecords() == 0) {
  539.                this.field_2.addRecord(this.xDat, 0, 2);
  540.             }
  541.  
  542.             this.field_2.setRecord(1, this.xDat, 0, this.xDat.length);
  543.          } catch (Exception var5) {
  544.          }
  545.  
  546.          try {
  547.             this.field_2.closeRecordStore();
  548.          } catch (Exception var4) {
  549.          }
  550.  
  551.          this.midlet.exitMIDlet();
  552.       } else if (var1 == this.cmInfo) {
  553.          this.midlet.showInfo();
  554.       } else if (var1 == this.cmAbout) {
  555.          this.midlet.showAbout();
  556.       }
  557.  
  558.    }
  559.  
  560.    static {
  561.       MAX_LEVEL = biDat.length;
  562.       mvName = "UDLR";
  563.       hisKeys = new int[]{50, 56, 52, 54};
  564.    }
  565. }
  566.